Controller_busqueda = function(){
	
	var _this = this;
	var _UI_busqueda = new UI_panel_busqueda(this);//inicializa el panel de busqueda (TAB busqueda)
	
	var _nombreSpaces = null;
	
	this.setupInputBoxes = function(nombreSpaces){_nombreSpaces = nombreSpaces; _UI_busqueda.setupInputBoxes(nombreSpaces);};
	
	 //hacemos el pedido AJAX para encontrar el camino que va desde source a target
	this.pedirCamino = function(source, target){

		CONTROLLER_PAGE_STATE.pedidoCamino();
		
		if (VERSION_BETA){
			_this.procesarRespuestaCamino(UTILS.camino_de_prueba);
		}else{
			//hago el pedido de la ruta al servidor
			 $.ajax({
	            type: "GET",
	            url: "./wrapper.php?", //TODO
	            data: {
	                "source": source,
	                "target": target
	            },
	            success: function(data){
	            	 var respuesta = eval('(' + data + ')');
	            	_this.procesarRespuestaCamino(respuesta);
	            },
	            error: function(){alert('ERROR. al pedir camino al servidor');}
	        });
		}
		
		
	};
	
	
	//procesa la respuesta del servidor, luego de realizar un pedido de camino
	this.procesarRespuestaCamino = function(respuesta){
            
            if (respuesta.resultado){
	              	 
          		//primero evaluo si los edificios/pisos que forman el camino, estan cargados 
          		//del lado del cliente
          		resultado = eval(respuesta.resultado);//TODO
          		pisosFaltantes = {};
          		var pisos = [];
          		var res_i = null; 
          		
          		for (var i = 0, l = resultado.length; i< l; i++){
          			
          			res_i = resultado[i];
          			if (res_i.tipo != "plano") continue; //TODO para detectar los de tipo portal
          			
          			var patt = new RegExp('[^\/]*');
        			var nombreEdificio = res_i.id.match(patt)[0];
        			var nombrePiso = res_i.id.substring(nombreEdificio.length +1);
        			var nivel = res_i.level;
       			     
       			    var nombrePisos = {};
          			if (!CONTROLLER_JERARQUIA_SPACES.existePiso(nombreEdificio, nombrePiso)){ //si no existe el piso
          				if ($.inArray(nombrePiso, pisos) == -1){//si no agregue un piso con ese mismo nombre, lo agrego.
          						pisos.push(nombrePiso);
          				}
          			}
          		} 
          		 
          		//agrego la extension .json a los nombres de los pisos
          		for (var i = 0, l = pisos.length; i< l; i++){
     				pisos[i] += ".json";
     			}
          		
          		res = resultado;//TODO (arreglar con variable de contexto)
          		//_UI_busqueda.progresoCarga();
          		
          		
          		if (pisos.length){         			
          			//si tengo que cargar al menos un piso, le digo al controlador que los inserte
              		CONTROLLER_JERARQUIA_SPACES.insertarNuevosPisos(pisos, callbackPisosInsertados);//TODO: esto esta cableado para pisos de un solo EDIFICIO!
          		}else if(callbackPisosInsertados){
          			//ya estan cargados todos los pisos del camino
          			callbackPisosInsertados();
          		}
          	
            }else{           	
            		alert("oops! hubo un error con el pedido al servidor: \n"+respuesta.error); //TODO     
            		$("#botonGetCamino").removeClass('ui-state-disabled');
            }
       };
		
       var res = null;//TODO
       
       
       
       //funcion que se llama una vez que se agregaron los nuevos pisos (de ser necesario)
       //crea los objetos 3D para mostrar por pantalla
       //crea la animacion
       //crea el panel de la animacin
       function callbackPisosInsertados(){
    	   CONTROLLER_PAGE_STATE.cargandoPisos();
    	   //TODO preprocesar camino para que las coordenadas esten bien X=X,Y=Y,Z=Z
    	   CONTROLLER_JERARQUIA_SPACES.generateVisualRepresentations(); //a partir de los pisos que todavia no tienen rep 3D, genera todos los spaces, portales etc
    	   ANIMATOR.createAnimation(res);//crea la animacion y general el panel con los spaces en el camino
    	   CONTROLLER_PAGE_STATE.finCreacionPisos3D();
       };
       
       
       this.getLink = function(){
    	   source = $("#inputInicio").val();
		   target = $("#inputDestino").val();
		   return UTILS.getAbsolutePath() + "index.php?inicio="+source+"&destino="+target;
       };
       
      
};